1. Field of the Invention
This invention relates to processing hierarchical data structures and more particularly to methods for processing hierarchical data structures in disparate data repositories.
2. Description of the Related Art
Current data programming technologies are usually tailored to specific types of data repositories. In real-world applications, however, data frequently originates from a variety of heterogeneous data repositories such as databases, Web services, XML data stores, enterprise information systems, and the like. This heterogeneity creates significant challenges for application developers because of the broad range of programming models needed to interface with these diverse data repositories.
Typically, when a client interacts with a data repository in a heterogeneous environment, an intermediary agent, such as an adapter or other mediator, is used to bridge the gap between the client and the data repository, each of which may use different data conventions and operations for processing data. When data is stored as hierarchical data structures, the processing of these hierarchical structures can be quite complex. The processing is usually performed with a large repository-specific adapter. This adapter may be used to walk the hierarchical data structure, calculate what tasks need to be performed, and perform the desired operations in the data repository.
Nevertheless, this approach has several drawbacks. For example, the code for each adapter or mediator typically cannot be re-used since it is tailored specifically to the interaction between a particular client and a particular data repository. Because the adapter or mediator cannot be reused, a new adapter must often be created to bridge the gap between a different client and data repository combination. Creating a new adapter is often quite complex. Because of this complexity, there is a large potential for error when creating a new adapter.
Thus, methods are needed for simplifying the processing of hierarchical data structures, while being flexible enough to work with a variety of heterogeneous data repositories. Likewise, a common model is needed to represent operations for processing these hierarchical data structures. Such a model would simplify and improve the readability of code used to process these hierarchical data structures, while reducing errors and providing improved debugging and serviceability. Likewise, such a model may provide a simpler, more unified model for application programmers and provide new opportunities for tools and frameworks to work in a consistent manner with various heterogeneous data repositories.